package sgs.common.utils;

/**
 * 版本枚举类，用于标识和处理不同版本的相关信息。
 */
public enum VersionEnum {
    /**
     * 10周年
     */
    ZN("ZN", "10周年", Config.INSTANCE.getProperty("url.skin.zn"), Config.INSTANCE.getProperty("url.skin.max.zn")),
    /**
     * OL端版本
     */
    OL("OL", "OL端",Config.INSTANCE.getProperty("url.skin.ol"), Config.INSTANCE.getProperty("url.skin.max.ol")),
    /**
     * 移动端(国际服)
     */
    MB("MB","移动端(国际服)", null, null),
    /**
     * 未知版本
     */
    UNKNOWN("UNKNOWN", "未知版本",null, null);

    // 版本编码
    private final String code;
    // 版本描述
    private final String description;
    // 版本皮肤地址
    private final String url;
    // 版本高清皮肤地址
    private final String maxUrl;

    /**
     * 构造函数，初始化版本枚举项。
     *
     * @param code 版本的编码
     * @param description 版本的描述
     * @param url 版本的皮肤地址
     * @param maxUrl 版本的高清皮肤地址
     */
    VersionEnum(String code, String description, String url, String maxUrl) {
        this.code = code;
        this.description = description;
        this.url = url;
        this.maxUrl = maxUrl;
    }

    /**
     * 根据文件名获取版本枚举项。
     *
     * @param filename 文件名，预期以版本编码开头
     * @return 对应的版本枚举项
     */
    public static VersionEnum getByFileName(String filename) {
        if (filename.toUpperCase().startsWith("OL")) {
            return OL;
        } else if (filename.toUpperCase().startsWith("MB")) {
            return MB;
        } else if (filename.toUpperCase().startsWith("ZN")) {
            return ZN;
        } else {
            return UNKNOWN;
        }
    }

    /**
     * 获取版本编码。
     *
     * @return 版本编码
     */
    public String getCode() {
        return code;
    }

    /**
     * 获取版本描述。
     *
     * @return 版本描述
     */
    public String getDescription() {
        return description;
    }

    /**
     * 获取版本皮肤地址。
     *
     * @return 版本皮肤地址
     */
    public String getUrl() {
        return url;
    }

    /**
     * 获取版本高清皮肤地址。
     *
     * @return 版本高清皮肤地址
     */
    public String getMaxUrl() {
        return maxUrl;
    }
}
